#include <cassert>

inline const STL::string& Team::GetName() const
{
	return m_name;
}

inline int Team::GetBudget() const
{
	return m_budget;
}

inline void	Team::AddBudget(int i_budget)
{
	m_budget += i_budget;
}

inline const PeopleVec& Team::GetPlayersList() const
{
	return m_players;
}

inline const PeopleVec& Team::GetTrainersList() const
{
	return m_trainers;
}

inline void Team::SetTrainersList(const PeopleVec& i_trainers)
{
	m_trainers = i_trainers;
}

inline const People* const Team::GetTrainer(const size_t i_trainerIndex) const
{
	assert(i_trainerIndex < m_trainers.size());
	return m_trainers[i_trainerIndex];
}

inline People* const Team::GetTrainer(const size_t i_trainerIndex)
{
	assert(i_trainerIndex < m_trainers.size());
	return m_trainers[i_trainerIndex];
}

inline People* const * const Team::GetTrainersRoleList() const
{
	return m_trainerRoles;
}

inline const People* const Team::GetTrainersRole(const size_t i_trainerRoleIndex) const
{
	assert(i_trainerRoleIndex < Team::NUM_TRAINERS_ROLES);
	return m_trainerRoles[i_trainerRoleIndex];
}

inline People* const Team::GetTrainersRole(const size_t i_trainerRoleIndex)
{
	assert(i_trainerRoleIndex < Team::NUM_TRAINERS_ROLES);
	return m_trainerRoles[i_trainerRoleIndex];
}

inline void Team::SetTrainerRole(const size_t i_trainerIndex, const size_t i_trainerRoleIndex)
{
	assert(i_trainerIndex < m_trainers.size() && i_trainerRoleIndex < Team::NUM_TRAINERS_ROLES);
	m_trainerRoles[i_trainerRoleIndex] = m_trainers[i_trainerIndex];
}

inline void Team::SetName(STL::string i_name)
{
	m_name = i_name;	
}

inline void Team::SetUserControlled(bool i_userControlled)
{
	m_userControlled = i_userControlled;	
}

inline bool Team::IsUserControlled() const
{
	return m_userControlled;	
}

inline size_t Team::GetNumPlayers() const
{
	return m_players.size();
}

inline size_t Team::GetNumTrainers() const
{
	return m_trainers.size();
}


inline int Team::GetID() const
{
	return m_id;
}

inline const TeamParams& Team::GetParams()
{
	return Team::s_params;
}

inline TeamAI& Team::GetTeamAI()
{
	return m_ai;
}

inline int Team::GetTitolarsByRole(const int i_role) const
{
	return TITOLAR_PER_ROLE_BY_FORMATION[i_role][m_formation];
}

